package javaCode.chapter09.final_;

public class FinalDetail01 {
    public static void main(String[] args) {
        new CC();
        new EE().cal();
    }
}

class AA{
    /*
    1、定义时：如public final double TAX_RATE = 0.08;
    2、在构造器中
    3、在代码块中
     */
    public final double TAX_RATE = 0.08; //1.定义时赋值
    public final double TAX_RATE2;
    public final double TAX_RATE3;

    public static int age = 10;

    public AA() {//在构造器中赋值
        TAX_RATE2 = 1.1;
    }

    {//在代码块中赋值
        TAX_RATE3 = 2.2;
    }
}

class BB{
    /*
    1、如果final修饰的属性是静态的，则初始化的位置只能是
    1. 定义时  2. 静态代码块中 不能在构造器中， 因为 静态属性是在类加载时就创建好了
     */
    public static final double TAX_RATE;

    static {
        TAX_RATE = 10;
    }
}

//final类不能继承，但可以实例化对象
class CC{}

//如果类不是final类，但含有final方法，则该方法虽然不能重写，但是可以被继承
class DD{

    public final void cal(){
        System.out.println("cal()方法");
    }
}

class EE extends DD{

}